package net.hekka.canyoutalk.data.store;

import net.hekka.canyoutalk.share.constant.DatabaseType;

/**
 * 전화번호부 테이블("phonebook") 관련 SQL문들을 관리하는 클래스.
 * @author Jeffrey Ha
 */
public class PhoneBookSqlStore {

    /**
     * 전화번호부 테이블에 데이터를 집어넣기 위한 SQL문이다.
     * @param _databaseType 데이터베이스 타입
     * @return 전화번호부 테이블에 데이터를 집어넣기 위한 SQL문이다.
     */
    public static String getPhoneBookInsertSql(String _databaseType) {

        StringBuilder sql = new StringBuilder();

        if (_databaseType.equals(DatabaseType.MYSQL)) {
            sql.append("\n INSERT INTO phonebook    ");
            sql.append("\n    SET number = ?,       ");
            sql.append("\n        name   = ?        ");
        }
        return sql.toString();
    }

    /**
     * 전화번호부 테이블에 데이터를 UPDATE하는 SQL문을 구한다.
     * @param _databaseType 데이터베이스 타입
     * @return 전화번호부 테이블에 데이터를 UPDATE하는 SQL문자열
     */
    public static String getPhoneBookUpdateSql(String _databaseType) {
        StringBuilder sql = new StringBuilder();

        if (_databaseType.equals(DatabaseType.MYSQL)) {
            sql.append("\n UPDATE phonebook      ");
            sql.append("\n    SET name = ?       ");
            sql.append("\n  WHERE 1=1            ");
            sql.append("\n    AND number = ?     ");
        }
        return sql.toString();
    }

    /**
     * 전화번호부 테이블에 데이터를 DELETE하는 SQL문을 구한다.
     * @param _databaseType 데이터베이스 타입
     * @return 전화번호부 테이블에 데이터를 DELETE하는 SQL문자열
     */
    public static String getPhoneBookDeleteSql(String _databaseType) {
        StringBuilder sql = new StringBuilder();

        if (_databaseType.equals(DatabaseType.MYSQL)) {
            sql.append("\n DELETE FROM phonebook ");
            sql.append("\n  WHERE 1=1            ");
            sql.append("\n    AND number = ?     ");
        }
        return sql.toString();
    }

    /**
     * 전화번호부 테이블에서 조건에 맞는 데이터의 갯수를 구하기 위한 SQL문이다.
     * @param _databaseType 데이터베이스 타입
     * @return 전화번호부 테이블에서 조건에 맞는 데이터의 갯수를 구하기 위한 SQL
     */
    public static String getCountOfPhoneBookSelectSql(String _databaseType) {

        StringBuilder sql = new StringBuilder();

        if (_databaseType.equals(DatabaseType.MYSQL)) {
            sql.append("\n select count(number) as count  ");
            sql.append("\n   from phonebook               ");
        }
        return sql.toString();
    }

    /**
     * 전화번호부 테이블 데이터를 조회한다.
     * @param _databaseType 데이터베이스 타입
     * @return 전화번호부 테이블 데이터를 조회한다.
     */
    public static String getPhoneBookSelectSql(String _databaseType) {

        StringBuilder sql = new StringBuilder();

        if (_databaseType.equals(DatabaseType.MYSQL)) {
            sql.append("\n select number,        ");
            sql.append("\n        name           ");
            sql.append("\n   from phonebook      ");
            sql.append("\n  where 1=1            ");
            sql.append("\n  order by number      ");
            sql.append("\n  limit ?, ?           ");
        }
        return sql.toString();
    }

}
